// Includsion guard start
#ifndef GAME_ENGINE_TYPES_H
#define GAME_ENGINE_TYPES_H

// Include libraries
#include <SDL/SDL.h>

// Include misc
#include "typedefs.h"

// Structs
	struct BoundingBox
	{
		// Rectangle
			// Enabled
			bool rectEnabled;

			// Position
			s32 rectLeft;
			s32 rectTop;

			// Dimensions
			u16 rectWidth;
			u16 rectHeight;

		// Slope
			// Enabled
			bool slopeEnabled;

			// Position
			s32 slopeLeft;
			s32 slopeTop;

			// Dimensions
			u16 slopeWidth;
			s16 slopeHeight; // Note: can be negative
	};

	// Specification for terrain parts structure
	struct TerrainPartSpecs
	{
		SDL_Rect clip;
		BoundingBox* boundingBox;
	};

	// Instance of terrain part structure
	struct TerrainPartInstance
	{
		u16 terrainPartSpecsIdentifier;
		s32 x;
		s32 y;
	};

// Enumerators
	// Character type
	enum CharacterType
	{
		CHARACTER_NONE,
		CHARACTER_MEGAMAN,
		CHARACTER_ZERO
	};

// Constants
	// Defined constants
		// The maximum lenght of a file path
		#define MAX_PATH 200

	// Constants
		// Colllision integer constants
			// Terrain
			const u32 COLLISION_TERRAIN=0x1;

		// Character actions
		const u32 C_ACTION_LEFT=0x1;
		const u32 C_ACTION_RIGHT=0x2;
		const u32 C_ACTION_FIRE=0x4;
		const u32 C_ACTION_SLIDE=0x8;
		const u32 C_ACTION_JUMP=0x10;

		// Character properties
		const u16 C_JUMP_TIME=8;
		const u16 C_WALK_SPEED=4;
		const u16 C_GRAVITY=2;
		const u16 C_MAX_FALL_SPEED=6;
		const u16 C_JUMP_SPEED=6;


// Inclusion guard end
#endif
